cargo.git
9 years agoLinewrap the error message from check_metadata.
Ralph Giles [Thu, 1 Sep 2016 00:04:29 +0000 (17:04 -0700)]
Linewrap the error message from check_metadata.

This lets test result expected output pass the long-line style check.

9 years agoVerify `cargo package` rejects path dependencies.
Ralph Giles [Wed, 31 Aug 2016 23:13:26 +0000 (16:13 -0700)]
Verify `cargo package` rejects path dependencies.

Port of the equivalent test from the `cargo publish` command.

9 years agoCheck for path dependencies.
Ralph Giles [Wed, 31 Aug 2016 23:11:33 +0000 (16:11 -0700)]
Check for path dependencies.

Port registry::verify_dependencies to the `cargo package`
command to perform the local portion of that check. It
looks like the package operation doesn't generally make
reference to the registry, so skip variant-origin checks
until publish time.

9 years agoAuto merge of #3038 - esclear:master, r=alexcrichton
bors [Wed, 31 Aug 2016 18:34:48 +0000 (11:34 -0700)]
Auto merge of #3038 - esclear:master, r=alexcrichton

Add --all-features flag to cargo

As (more or less) requested in #1173 I added a `--all-features` flag to cargo that builds all available features.

I hope I documented it in all the right places.

If there's something weird or wrong, please give me a heads up.

9 years agoAdd --all-features flag to cargo
Daniel Albert [Wed, 31 Aug 2016 17:03:26 +0000 (19:03 +0200)]
Add --all-features flag to cargo

9 years agoMerge pull request #3055 from rust-lang/revert-3054-simplify
Alex Crichton [Mon, 29 Aug 2016 16:30:37 +0000 (09:30 -0700)]
Merge pull request #3055 from rust-lang/revert-3054-simplify

Revert "Replace for loop with iterators"

9 years agoRevert "Replace for loop with iterators"
Alex Crichton [Mon, 29 Aug 2016 16:30:14 +0000 (09:30 -0700)]
Revert "Replace for loop with iterators"

9 years agoMerge pull request #3054 from matklad/simplify
Alex Crichton [Mon, 29 Aug 2016 16:29:58 +0000 (09:29 -0700)]
Merge pull request #3054 from matklad/simplify

Replace for loop with iterators

9 years agoReplace for loop with iterators
Aleksey Kladov [Mon, 29 Aug 2016 07:34:32 +0000 (10:34 +0300)]
Replace for loop with iterators

9 years agoAuto merge of #3050 - nbaksalyar:configure-fix, r=alexcrichton
bors [Sun, 28 Aug 2016 19:02:39 +0000 (12:02 -0700)]
Auto merge of #3050 - nbaksalyar:configure-fix, r=alexcrichton

Fix POSIX shell in configure script (support Illumos & Solaris)

This patch provides the same fix that is applied for the `configure` script in rustc:
https://github.com/rust-lang/rust/blob/master/configure#L3-L9. It is required because `#!/bin/sh` is not Bash/POSIX-compatible on Solaris and its derivatives by default.

This change was previously discussed there: https://github.com/rust-lang/rust/pull/28589.

9 years agoAuto merge of #3051 - matklad:ws-metadata, r=alexcrichton
bors [Sun, 28 Aug 2016 18:01:30 +0000 (11:01 -0700)]
Auto merge of #3051 - matklad:ws-metadata, r=alexcrichton

`cargo metadata` works with workspaces

Closes #3003

9 years ago`cargo metadata` works with workspaces
Aleksey Kladov [Sun, 28 Aug 2016 12:10:27 +0000 (15:10 +0300)]
`cargo metadata` works with workspaces

9 years agoFix POSIX shell in the configure script
Nikita Baksalyar [Thu, 16 Jun 2016 05:25:18 +0000 (05:25 +0000)]
Fix POSIX shell in the configure script

9 years agoAuto merge of #3047 - alexcrichton:update-libz, r=alexcrichton
bors [Fri, 26 Aug 2016 21:43:13 +0000 (14:43 -0700)]
Auto merge of #3047 - alexcrichton:update-libz, r=alexcrichton

Update libz-sys to 1.0.6

Fixes a build error on OSX

Closes #3037

9 years agoUpdate libz-sys to 1.0.6
Alex Crichton [Fri, 26 Aug 2016 21:42:40 +0000 (14:42 -0700)]
Update libz-sys to 1.0.6

Fixes a build error on OSX

Closes #3037

9 years agoAuto merge of #3040 - matklad:rootless-readlockfile, r=alexcrichton
bors [Fri, 26 Aug 2016 19:48:17 +0000 (12:48 -0700)]
Auto merge of #3040 - matklad:rootless-readlockfile, r=alexcrichton

Don't use current package when reading lockfile

Looks like this `default` thing is basically a hack, which is fired when the lockfile references some package which is no longer present. That is, if I remove `default` and just `unwrap` source id, the only test which fails is `git_with_lockfile` because it has a typo in the lockfile.

So I've just changed the `default` to some dummy path. Perhaps a more correct solution would be to ignore such packages completely when loading lockfile.

9 years agoAuto merge of #3044 - jeandudey:unused-code, r=alexcrichton
bors [Fri, 26 Aug 2016 15:56:44 +0000 (08:56 -0700)]
Auto merge of #3044 - jeandudey:unused-code, r=alexcrichton

Remove unused macro (configure_shell)

Also i've removed some unused lints on sha256.rs

9 years agoRemove unused macro (configure_shell)
Jean Pierre Dudey [Fri, 26 Aug 2016 12:01:07 +0000 (08:01 -0400)]
Remove unused macro (configure_shell)

Also i've removed some unused lints on sha256.rs

9 years agoRefactor EncodableResolve::into_resolve
Aleksey Kladov [Fri, 26 Aug 2016 09:34:17 +0000 (12:34 +0300)]
Refactor EncodableResolve::into_resolve

9 years agoAuto merge of #3039 - matklad:test-lockfiles, r=alexcrichton
bors [Thu, 25 Aug 2016 17:44:25 +0000 (10:44 -0700)]
Auto merge of #3039 - matklad:test-lockfiles, r=alexcrichton

Simplify lockfile tests

Use project builder to create a file and an extension function to read it.

9 years agoSimplify lockfile tests
Aleksey Kladov [Thu, 25 Aug 2016 08:34:25 +0000 (11:34 +0300)]
Simplify lockfile tests

9 years agoDon't use current package when reading lockfile
Aleksey Kladov [Thu, 25 Aug 2016 10:10:45 +0000 (13:10 +0300)]
Don't use current package when reading lockfile

9 years agoAuto merge of #3021 - alexcrichton:test-release-panic-abort, r=brson
bors [Tue, 23 Aug 2016 22:02:37 +0000 (15:02 -0700)]
Auto merge of #3021 - alexcrichton:test-release-panic-abort, r=brson

Fix transitive doctests panic=abort

Ensure that when we compile doctested libraries or examples we use the same
panic mode as the rest of the tests, namely ignoring panic=abort b/c libtest
isn't compiled with panic=abort.

Closes #3017

9 years agoAuto merge of #3031 - matklad:lockfile-test, r=alexcrichton
bors [Tue, 23 Aug 2016 20:57:48 +0000 (13:57 -0700)]
Auto merge of #3031 - matklad:lockfile-test, r=alexcrichton

Lockfile test

9 years agoRegression test for lockfile format
Aleksey Kladov [Mon, 22 Aug 2016 23:59:31 +0000 (02:59 +0300)]
Regression test for lockfile format

9 years agoAuto merge of #3029 - matklad:workspace-overrides, r=alexcrichton
bors [Mon, 22 Aug 2016 16:07:04 +0000 (09:07 -0700)]
Auto merge of #3029 - matklad:workspace-overrides, r=alexcrichton

Don't special case root package for overrides

Hi! What is the expected behavior of path overrides and workspaces? There are some [tests] for this, but looks like they don't actually test the behavior: this commit removes special casing of the root package, but `override_self` still passes. I see two options:

1. Allow overriding of the workspace members as usual. This amounts to removing that `filter`

2. Ignore overriding of the workspace members.

In any case, I think it would be nice to add a test which overrides local package to some other package to make sure that test does not pass simply because the package and its override are in fact the same.

[tests]: https://github.com/rust-lang/cargo/blob/master/tests/path.rs#L599-L679

9 years agoDon't special case root package for overrides
Aleksey Kladov [Mon, 22 Aug 2016 12:07:18 +0000 (15:07 +0300)]
Don't special case root package for overrides

9 years agoAuto merge of #3026 - whitequark:patch-1, r=alexcrichton
bors [Sun, 21 Aug 2016 17:37:40 +0000 (10:37 -0700)]
Auto merge of #3026 - whitequark:patch-1, r=alexcrichton

doc: fix platform-specific definitions section

Right now the section seems to imply that using cfg(target_pointer_width = "32")
is an acceptable way to detect whether the crate should be built for x86.

9 years agoForward compatibility with rootless lockfiles
Aleksey Kladov [Sat, 20 Aug 2016 21:27:06 +0000 (00:27 +0300)]
Forward compatibility with rootless lockfiles

9 years agodoc: fix platform-specific definitions section
whitequark [Sat, 20 Aug 2016 17:41:37 +0000 (17:41 +0000)]
doc: fix platform-specific definitions section

Right now the section seems to imply that using cfg(target_pointer_width = "32")
is an acceptable way to detect whether the crate is built for x86.

9 years agoAuto merge of #3022 - alexcrichton:add-more-metadata, r=brson
bors [Fri, 19 Aug 2016 21:24:29 +0000 (14:24 -0700)]
Auto merge of #3022 - alexcrichton:add-more-metadata, r=brson

Add a temporary env var to enable hashes in filenames

For rustbuild we need the hashes to exist for all deps, even if they're path
deps, because we care about the actual file names. For example we don't want to
install /usr/lib/libstd.so!

This adds a "secret" environment variable, `__CARGO_DEFAULT_LIB_METADATA` which
re-enables the old behavior of just putting hashes in filenames.

Closes #3005

9 years agoAdd a temporary env var to enable hashes in filenames
Alex Crichton [Fri, 19 Aug 2016 20:36:32 +0000 (13:36 -0700)]
Add a temporary env var to enable hashes in filenames

For rustbuild we need the hashes to exist for all deps, even if they're path
deps, because we care about the actual file names. For example we don't want to
install /usr/lib/libstd.so!

This adds a "secret" environment variable, `__CARGO_DEFAULT_LIB_METADATA` which
re-enables the old behavior of just putting hashes in filenames.

Closes #3005

9 years agoAuto merge of #3020 - tshepang:rustfmt-cargo_doc, r=alexcrichton
bors [Fri, 19 Aug 2016 20:44:26 +0000 (13:44 -0700)]
Auto merge of #3020 - tshepang:rustfmt-cargo_doc, r=alexcrichton

rustfmt cargo_doc.rs

9 years agoFix transitive doctests panic=abort
Alex Crichton [Fri, 19 Aug 2016 20:25:13 +0000 (13:25 -0700)]
Fix transitive doctests panic=abort

Ensure that when we compile doctested libraries or examples we use the same
panic mode as the rest of the tests, namely ignoring panic=abort b/c libtest
isn't compiled with panic=abort.

Closes #3017

9 years agorustfmt cargo_doc.rs
Tshepang Lekhonkhobe [Fri, 19 Aug 2016 20:18:57 +0000 (22:18 +0200)]
rustfmt cargo_doc.rs

9 years agoAuto merge of #3019 - matklad:rootless-resolve_ws, r=alexcrichton
bors [Fri, 19 Aug 2016 19:02:25 +0000 (12:02 -0700)]
Auto merge of #3019 - matklad:rootless-resolve_ws, r=alexcrichton

Don't require current package in resolve_ws

9 years agoDon't require current package in resolve_ws
Aleksey Kladov [Fri, 19 Aug 2016 18:00:21 +0000 (21:00 +0300)]
Don't require current package in resolve_ws

9 years agoAuto merge of #3018 - Jake-Shadle:master, r=steveklabnik
bors [Fri, 19 Aug 2016 16:35:26 +0000 (09:35 -0700)]
Auto merge of #3018 - Jake-Shadle:master, r=steveklabnik

docs(manifest): Update crate-types with `cdylib`

Rust 1.11 now supports the `cdylib` crate-type, so added it to the list of options.

Also added a link to the [Linkage](https://doc.rust-lang.org/reference.html#linkage) section in the Rust Reference manual which explains what the different crate types actually mean in practice....though right now it actually doesn't explain what a `cdylib` is, specifically. ;)

9 years agodocs(manifest): Remove 1.11 reference
Jake Shadle [Fri, 19 Aug 2016 16:32:22 +0000 (18:32 +0200)]
docs(manifest): Remove 1.11 reference

9 years agodocs(manifest): Update crate-types with `cdylib`
Jake Shadle [Fri, 19 Aug 2016 16:21:43 +0000 (18:21 +0200)]
docs(manifest): Update crate-types with `cdylib`

Rust 1.11 now supports the `cdylib` crate-type, so added it to the
list of options. Also added a link to the
[Linkage](https://doc.rust-lang.org/reference.html#linkage) section
in the Rust Reference manual which explains what the different
crate types actually mean in practice....though right now it actually
doesn't explain what a `cdylib` is, specifically. ;)

9 years agoAuto merge of #3013 - matklad:rootless-resolve, r=alexcrichton
bors [Thu, 18 Aug 2016 19:54:46 +0000 (12:54 -0700)]
Auto merge of #3013 - matklad:rootless-resolve, r=alexcrichton

Rootless resolve

This should help to make more commands applicable to the whole workspace. Though there is apparently a ton of work to make `cargo metadata` work with workspaces.

This does not support rootless lockfiles. Will do this in a separate PR.

9 years agoRemove root field from Resolve.
Aleksey Kladov [Wed, 17 Aug 2016 22:01:19 +0000 (01:01 +0300)]
Remove root field from Resolve.

9 years agoDon't use Resolve.root when checking for cycles
Aleksey Kladov [Wed, 17 Aug 2016 20:31:29 +0000 (23:31 +0300)]
Don't use Resolve.root when checking for cycles

9 years agoDon't use Resolve.root in cargo metadata
Aleksey Kladov [Wed, 17 Aug 2016 23:34:20 +0000 (02:34 +0300)]
Don't use Resolve.root in cargo metadata

9 years agoAdd current_package to the Context
Aleksey Kladov [Wed, 17 Aug 2016 19:20:09 +0000 (22:20 +0300)]
Add current_package to the Context

9 years agoAuto merge of #3015 - tshepang:match-block-not-needed, r=alexcrichton
bors [Thu, 18 Aug 2016 15:47:35 +0000 (08:47 -0700)]
Auto merge of #3015 - tshepang:match-block-not-needed, r=alexcrichton

match block not needed

9 years agoAuto merge of #3007 - whitequark:opt-level-s, r=alexcrichton
bors [Thu, 18 Aug 2016 15:06:09 +0000 (08:06 -0700)]
Auto merge of #3007 - whitequark:opt-level-s, r=alexcrichton

Allow using opt-level="s"/"z" in profile overrides

Initially, I've considered making a dedicated `OptLevel` enum, but this appeared to bring no practical benefit, only boilerplate, so I've used a String instead, which is also in line with the `u32` that was there before, not even checked for being in range `0...3`.

9 years agoMerge branch 'master' into match-block-not-needed
Tshepang Lekhonkhobe [Thu, 18 Aug 2016 06:49:07 +0000 (08:49 +0200)]
Merge branch 'master' into match-block-not-needed

9 years agomatch block not needed
Tshepang Lekhonkhobe [Thu, 18 Aug 2016 06:46:42 +0000 (08:46 +0200)]
match block not needed

9 years agoAllow using opt-level="s"/"z" in profile overrides.
whitequark [Wed, 17 Aug 2016 07:35:57 +0000 (07:35 +0000)]
Allow using opt-level="s"/"z" in profile overrides.

Fixes #2655.

9 years agoAuto merge of #3010 - steveklabnik:gh3001, r=alexcrichton
bors [Wed, 17 Aug 2016 19:02:10 +0000 (12:02 -0700)]
Auto merge of #3010 - steveklabnik:gh3001, r=alexcrichton

Revert to previous semver version.

As it turns out, people were taking advantage of bugginess in semver, so
we can't do this upgrade yet.

Fixes #3001

9 years agoAuto merge of #3011 - alexcrichton:new-openssl, r=alexcrichton
bors [Wed, 17 Aug 2016 17:57:29 +0000 (10:57 -0700)]
Auto merge of #3011 - alexcrichton:new-openssl, r=alexcrichton

Change download source for OpenSSL

Apparently they now redirect openssl.org to www.openssl.org

9 years agoChange download source for OpenSSL
Alex Crichton [Wed, 17 Aug 2016 17:56:43 +0000 (10:56 -0700)]
Change download source for OpenSSL

Apparently they now redirect openssl.org to www.openssl.org

9 years agoRevert to previous semver version.
Steve Klabnik [Wed, 17 Aug 2016 14:10:10 +0000 (10:10 -0400)]
Revert to previous semver version.

As it turns out, people were taking advantage of bugginess in semver, so
we can't do this upgrade yet.

Fixes #3001

9 years agoAuto merge of #3002 - untitaker:trunchate-cargo-config, r=alexcrichton
bors [Tue, 16 Aug 2016 21:11:32 +0000 (14:11 -0700)]
Auto merge of #3002 - untitaker:trunchate-cargo-config, r=alexcrichton

Trunchate cargo config properly

None

9 years agoTrunchate cargo config properly
Markus Unterwaditzer [Tue, 16 Aug 2016 20:51:08 +0000 (22:51 +0200)]
Trunchate cargo config properly

9 years agoAuto merge of #2991 - matklad:deadlocks, r=alexcrichton
bors [Mon, 15 Aug 2016 21:13:39 +0000 (14:13 -0700)]
Auto merge of #2991 - matklad:deadlocks, r=alexcrichton

Deadlocks with git dependencies

Only a test for now to verify that it actually fails on Travis.

Hopefully will close #2987

9 years agoUse a single lock for all git repositories
Aleksey Kladov [Mon, 15 Aug 2016 10:48:40 +0000 (13:48 +0300)]
Use a single lock for all git repositories

9 years agoAuto merge of #2994 - krbullock:fix/document-vcs-hg-config, r=alexcrichton
bors [Mon, 15 Aug 2016 19:05:55 +0000 (12:05 -0700)]
Auto merge of #2994 - krbullock:fix/document-vcs-hg-config, r=alexcrichton

Document ability to configure `cargo-new.vcs = "hg"`

9 years agoDocument ability to configure `cargo-new.vcs = "hg"`
Kevin Bullock [Mon, 15 Aug 2016 18:36:49 +0000 (13:36 -0500)]
Document ability to configure `cargo-new.vcs = "hg"`

9 years agoAdd a test for #2987
Aleksey Kladov [Sun, 14 Aug 2016 23:04:07 +0000 (02:04 +0300)]
Add a test for #2987

9 years agoAuto merge of #2988 - lifthrasiir:doc-open-with-target, r=alexcrichton
bors [Sun, 14 Aug 2016 07:07:46 +0000 (00:07 -0700)]
Auto merge of #2988 - lifthrasiir:doc-open-with-target, r=alexcrichton

Make `cargo doc --open --target TARGET` work as expected.

Currently `cargo doc --open` opens `$TARGET/doc` unconditionally, but it is incorrect if the explicit target is specified.

The target directory should be same to what `Layout::new()` generates, and ideally it should use the same data source (it hadn't been so far), but I'm yet to find a good way to signal that. At least I'm pretty sure that `Compilation` is not a good position to put them (it assumes the bipartite "root"-"deps" separation which doesn't quite work in documentation).

9 years agoMake `cargo doc --open --target TARGET` work as expected.
Kang Seonghoon [Sat, 13 Aug 2016 21:30:02 +0000 (06:30 +0900)]
Make `cargo doc --open --target TARGET` work as expected.

9 years agoAuto merge of #2978 - matklad:opt-level, r=alexcrichton
bors [Tue, 9 Aug 2016 18:17:13 +0000 (11:17 -0700)]
Auto merge of #2978 - matklad:opt-level, r=alexcrichton

Gracefully handle errors in a lockfile

Closes #2715

Question: why internal errors are hidden by default? I think if the unexpected has happened you most likely want to know some details. See also #2756.

9 years agoAuto merge of #2979 - jonathandturner:prepare_for_new_format, r=alexcrichton
bors [Tue, 9 Aug 2016 16:25:54 +0000 (09:25 -0700)]
Auto merge of #2979 - jonathandturner:prepare_for_new_format, r=alexcrichton

Update cargo tests in prep for new errors

This updates a couple tests so that we can upgrade rustc to new error format.

r? @alexcrichton

9 years agoUpdate cargo tests in prep for new errors
Jonathan Turner [Tue, 9 Aug 2016 16:23:52 +0000 (09:23 -0700)]
Update cargo tests in prep for new errors

9 years agoDon't panic because of invalid source
Aleksey Kladov [Tue, 9 Aug 2016 13:11:20 +0000 (16:11 +0300)]
Don't panic because of invalid source

9 years agoGracefully handle duplicate package in a lockfile
Aleksey Kladov [Tue, 9 Aug 2016 12:14:26 +0000 (15:14 +0300)]
Gracefully handle duplicate package in a lockfile

9 years agoAuto merge of #2974 - alexcrichton:etag, r=brson
bors [Tue, 9 Aug 2016 02:10:55 +0000 (19:10 -0700)]
Auto merge of #2974 - alexcrichton:etag, r=brson

Speed up noop registry updates with GitHub

This commit adds supports to registry index updates to use GitHub's HTTP API [1]
which is purportedly [2] much faster than doing a git clone, and emprically that
appears to be the case.

This logic kicks in by looking at the URL of a registry's index, and if it looks
exactly like `github.com/$user/$repo` then we'll attempt to use GitHub's API,
otherwise we always fall back to a git update.

This behavior may *slow down* registry updates which actually need to download
information as an extra HTTP request is performed to figure out that we need to
perform a git fetch, but hopefully that won't actually be the case much of the
time!

[1]: https://developer.github.com/v3/repos/commits/#get-the-sha-1-of-a-commit-reference
[2]: https://developer.github.com/changes/2016-02-24-commit-reference-sha-api/

Closes https://github.com/rust-lang/cargo/issues/2451

9 years agoAuto merge of #2973 - alexcrichton:update-deps, r=alexcrichton
bors [Mon, 8 Aug 2016 18:14:09 +0000 (11:14 -0700)]
Auto merge of #2973 - alexcrichton:update-deps, r=alexcrichton

Update dependencies in Cargo.lock

A few bug fixes here and there we'll pick up (e.g. the gcc crate on newer MSVC
versions), but otherwise just staying on top of things.

9 years agoSpeed up noop registry updates with GitHub
Alex Crichton [Tue, 12 Jul 2016 16:36:33 +0000 (09:36 -0700)]
Speed up noop registry updates with GitHub

This commit adds supports to registry index updates to use GitHub's HTTP API [1]
which is purportedly [2] much faster than doing a git clone, and emprically that
appears to be the case.

This logic kicks in by looking at the URL of a registry's index, and if it looks
exactly like `github.com/$user/$repo` then we'll attempt to use GitHub's API,
otherwise we always fall back to a git update.

This behavior may *slow down* registry updates which actually need to download
information as an extra HTTP request is performed to figure out that we need to
perform a git fetch, but hopefully that won't actually be the case much of the
time!

[1]: https://developer.github.com/v3/repos/commits/#get-the-sha-1-of-a-commit-reference
[2]: https://developer.github.com/changes/2016-02-24-commit-reference-sha-api/

9 years agoUpdate dependencies in Cargo.lock
Alex Crichton [Sun, 7 Aug 2016 08:15:15 +0000 (01:15 -0700)]
Update dependencies in Cargo.lock

A few bug fixes here and there we'll pick up (e.g. the gcc crate on newer MSVC
versions), but otherwise just staying on top of things.

9 years agoAuto merge of #2871 - QuiltOS:doc-build-deps, r=alexcrichton
bors [Mon, 8 Aug 2016 17:37:17 +0000 (10:37 -0700)]
Auto merge of #2871 - QuiltOS:doc-build-deps, r=alexcrichton

Better rational for build-dependencies and other kinds being disjoint.

The old reason was bad because nothing prevents normal dependencies from
being built before the build script.

9 years agoAuto merge of #2954 - alexcrichton:panic-abort-plugins, r=brson
bors [Sun, 7 Aug 2016 06:35:42 +0000 (23:35 -0700)]
Auto merge of #2954 - alexcrichton:panic-abort-plugins, r=brson

Fix panic=abort when compiling with plugins

Closes #2738

9 years agoAuto merge of #2970 - jirutka:fix-musl-nfs, r=alexcrichton
bors [Sun, 7 Aug 2016 03:01:34 +0000 (20:01 -0700)]
Auto merge of #2970 - jirutka:fix-musl-nfs, r=alexcrichton

Disable is_on_nfs_mount() check on musl libc (fixes #2937)

musl libc doesn't provide constant NFS_SUPER_MAGICK that is used in the is_on_nfs_mount function.

9 years agoAuto merge of #2967 - frewsxcv:clippy, r=alexcrichton
bors [Sun, 7 Aug 2016 02:20:17 +0000 (19:20 -0700)]
Auto merge of #2967 - frewsxcv:clippy, r=alexcrichton

Address some clippy lints.

None

9 years agoAuto merge of #2971 - alexcrichton:openssl-init, r=alexcrichton
bors [Sun, 7 Aug 2016 01:13:13 +0000 (18:13 -0700)]
Auto merge of #2971 - alexcrichton:openssl-init, r=alexcrichton

Update OpenSSL-using dependencies

They've all been updated to canonicalize as `openssl_sys::init` as the "one true
method" for initializing OpenSSL,

Closes #2961

9 years agoUpdate OpenSSL-using dependencies
Alex Crichton [Sun, 7 Aug 2016 00:49:32 +0000 (17:49 -0700)]
Update OpenSSL-using dependencies

They've all been updated to canonicalize as `openssl_sys::init` as the "one true
method" for initializing OpenSSL,

Closes #2961

9 years agoDisable is_on_nfs_mount() check on musl libc (fixes #2937)
Jakub Jirutka [Sun, 7 Aug 2016 00:22:00 +0000 (02:22 +0200)]
Disable is_on_nfs_mount() check on musl libc (fixes #2937)

musl libc doesn't provide constant NFS_SUPER_MAGICK that is used in
the is_on_nfs_mount function.

9 years agoCombine duplicate `if` arm blocks.
Corey Farwell [Sat, 6 Aug 2016 02:44:17 +0000 (22:44 -0400)]
Combine duplicate `if` arm blocks.

9 years agoUse `char` when using single character as `Pattern`.
Corey Farwell [Sat, 6 Aug 2016 02:31:19 +0000 (22:31 -0400)]
Use `char` when using single character as `Pattern`.

9 years agoRemove unnecessary usages of `format!` macro.
Corey Farwell [Sat, 6 Aug 2016 02:15:27 +0000 (22:15 -0400)]
Remove unnecessary usages of `format!` macro.

9 years agoAuto merge of #2962 - alexcrichton:demote-error, r=brson
bors [Fri, 5 Aug 2016 16:13:51 +0000 (09:13 -0700)]
Auto merge of #2962 - alexcrichton:demote-error, r=brson

Demote duplicate build target error to a warning

Added in #2847 this ended up unfortunately breaking the `regex` crate on
nightly, so let's just issue a warning for awhile first. Eventually we can
promote this to an error if it becomes a problem.

9 years agoDemote duplicate build target error to a warning
Alex Crichton [Fri, 5 Aug 2016 16:07:18 +0000 (09:07 -0700)]
Demote duplicate build target error to a warning

Added in #2847 this ended up unfortunately breaking the `regex` crate on
nightly, so let's just issue a warning for awhile first. Eventually we can
promote this to an error if it becomes a problem.

9 years agoAuto merge of #2957 - mattico:patch-1, r=alexcrichton
bors [Fri, 5 Aug 2016 06:10:40 +0000 (23:10 -0700)]
Auto merge of #2957 - mattico:patch-1, r=alexcrichton

Fix typos in source-replacement docs

9 years agoAuto merge of #2960 - jseyfried:remove_unused_import, r=alexcrichton
bors [Fri, 5 Aug 2016 02:51:13 +0000 (19:51 -0700)]
Auto merge of #2960 - jseyfried:remove_unused_import, r=alexcrichton

Remove another unused import

Ideally, this would have been in #2942.

9 years agoRemove unused import.
Jeffrey Seyfried [Thu, 4 Aug 2016 22:12:35 +0000 (22:12 +0000)]
Remove unused import.

9 years agoFix typos
Matt Ickstadt [Thu, 4 Aug 2016 21:41:58 +0000 (16:41 -0500)]
Fix typos

9 years agoAuto merge of #2847 - munyari:build_targets, r=alexcrichton
bors [Thu, 4 Aug 2016 06:40:40 +0000 (23:40 -0700)]
Auto merge of #2847 - munyari:build_targets, r=alexcrichton

Warn about duplicated build targets

I basically wholesale copied `unique_names_in_targets` into a different `unique_build_targets` because of the different types. Is there any way I could have just used the existing functionality?

9 years agoFix panic=abort when compiling with plugins
Alex Crichton [Thu, 4 Aug 2016 03:36:28 +0000 (20:36 -0700)]
Fix panic=abort when compiling with plugins

Closes #2738

9 years agoWarn about duplicated build targets
Panashe M. Fundira [Sun, 10 Jul 2016 17:29:31 +0000 (13:29 -0400)]
Warn about duplicated build targets

9 years agoAuto merge of #2946 - alexcrichton:build-script-metadata, r=brson
bors [Tue, 2 Aug 2016 18:12:04 +0000 (11:12 -0700)]
Auto merge of #2946 - alexcrichton:build-script-metadata, r=brson

Always pass `-C metadata` to the compiler

If it's not otherwise available we just key it off the pkgid which should be
unique enough across compilations. This should help incremental compilation
efforts be "more incremental" across projects.

Closes #2943

9 years agoAlways pass `-C metadata` to the compiler
Alex Crichton [Tue, 2 Aug 2016 06:22:29 +0000 (23:22 -0700)]
Always pass `-C metadata` to the compiler

If it's not otherwise available we just key it off the pkgid which should be
unique enough across compilations. This should help incremental compilation
efforts be "more incremental" across projects.

Closes #2943

9 years agoAuto merge of #2857 - alexcrichton:redirect-sources, r=brson
bors [Mon, 1 Aug 2016 23:59:38 +0000 (16:59 -0700)]
Auto merge of #2857 - alexcrichton:redirect-sources, r=brson

Add support local mirrors of registries, take 2

This series of commits culminates in first class support in Cargo for local mirrors of registries. This is implemented through a number of other more generic mechanisms, and extra support was added along the way. The highlights of this PR, however, are:

New `.cargo/config` keys have been added to enable *replacing one source with another*. This functionality is intended to be used for mirrors of the main registry or otherwise one to one source correspondences. The support looks like:

```toml
[source.crates-io]
replace-with = 'my-awesome-registry'

[source.my-awesome-registry]
registry = 'https://github.com/my-awesome/registry-index'
```

This configuration means that instead of using `crates-io` (e.g. `https://github.com/rust-lang/crates.io-index`), Cargo will query the `my-awesome-registry` source instead (configured to a different index here). This alternate source **must be the exact same as the crates.io index**. Cargo assumes that replacement sources are exact 1:1 mirrors in this respect, and the following support is designed around that assumption.

When generating a lock file for crate using a replacement registry, the *original registry* will be encoded into the lock file. For example in the configuration above, all lock files will still mention crates.io as the registry that packages originated from. This semantically represents how crates.io is the source of truth for all crates, and this is upheld because all replacements have a 1:1 correspondance.

Overall, this means that no matter what replacement source you're working with, you can ship your lock file to anyone else and you'll all still have verifiably reproducible builds!

With the above support for custom registries, it's now possible for a project to be downloading crates from any number of sources. One of Cargo's core goals is reproducible builds, and with all these new sources of information it may be easy for a few situations to arise:

1. A local replacement of crates.io could be corrupt
2. A local replacement of crates.io could have made subtle changes to crates

In both of these cases, Cargo would today simply give non-reproducible builds. To help assuage these concerns, Cargo will now track the sha256 checksum of all crates from registries in the lock file. Whenever a `Cargo.lock` is generated from now on it will contain a `[metadata]` section which lists the sha256 checksum of all crates in the lock file (or `<none>` if the sha256 checksum isn't known).

Cargo already checks registry checksums against what's actually downloaded, and Cargo will now verify between iterations of the lock file that checksums remain the same as well. This means that if a local replacement registry is **not** in a 1:1 correspondance with crates.io, the lock file will prevent the build from progressing until the discrepancy is resolved.

In addition to the support above, there is now a new kind of source in Cargo, a "local registry", which is intended to be a subset of the crates.io ecosystem purposed for a local build for any particular project here or there. The way to enable this looks like:

```toml
[source.crates-io]
replace-with = 'my-awesome-registry'

[source.my-awesome-registry]
local-registry = 'path/to/my/local/registry'
```

This local registry is expected to have two components:

1. A directory called `index` which matches the same structure as the crates.io index. The `config.json` file is not required here.
2. Inside the registry directory are any number of `.crate` files (downloaded from crates.io). Each crate file has the name `<package>-<version>.crate`.

This local registry must currently be managed manually, but I plan on publishing and maintaining a Cargo subcommand to manage a local registry. It will have options to do things like:

1. Sync a local registry with a `Cargo.lock`
2. Add a registry package to a local registry
3. Remove a package from a local registry

In addition to local registries, Cargo also supports a "directory source" like so

```toml
[source.crates-io]
replace-with = 'my-awesome-registry'

[source.my-awesome-registry]
directory = 'path/to/some/sources'
```

A directory source is similar to a local registry above, except that all the crates are unpacked and visible as vendored source. This format is suitable for checking into source trees, like Gecko's.

Unlike local registries above we don't have a tarball to verify the crates.io checksum with, but each vendored dependency has metadata containing what it *would* have been. To further prevent modifications by accident, the metadata contains the checksum of each file which should prevent accidental local modifications and steer towards `[replace]` as the mechanism to edit dependencies if necessary.

This is quite a bit of new features! What's all this meant to do? Some example scenarios that this is envisioned to solve are:

1. Supporting mirrors for crates.io in a first class fashion. Once we have the ability to spin up your own local registry, it should be easy to locally select a new mirror.
2. Supporting round-robin mirrors, this provides an easy vector for configuration of "instead of crates.io hit the first source in this list that works"
3. Build environments where network access is not an option. Preparing a local registry ahead-of-time (from a known good lock file) will be a vector to ensure that all Rust dependencies are locally available.
   * Note this is intended to include use cases like Debian and Gecko

Even with the new goodies here, there's some more vectors through which this can be expanded:

* Support for running your own mirror of crates.io needs to be implemented to be "easy to do". There should for example be a `cargo install foo` available to have everything "Just Work".
* Replacing a source with a list of sources (attempted in round robin fashion) needs to be implemented
* Eventually this support will be extended to the `Cargo.toml` file itself. For example:
  * packages should be downloadable from multiple registries
  * replacement sources should be encodable into `Cargo.toml` (note that these replacements, unlike the ones above, would be encoded into `Cargo.lock`)
  * adding multiple mirrors to a `Cargo.toml` should be supported
* Implementing the subcommand above to manage local registries needs to happen (I will attend to this shortly)

9 years agoAuto merge of #2945 - QuiltOS:openssl, r=alexcrichton
bors [Mon, 1 Aug 2016 22:56:32 +0000 (15:56 -0700)]
Auto merge of #2945 - QuiltOS:openssl, r=alexcrichton

Use openssl on Unix rather than C functions directly for SHA256

Takes on an extra dependency, but removes unsafe code in the process.

@alexcrichton I was a little confused by what you were saying on IRC, so I went ahead and just speculatively made this. No worries if it is no good.

9 years agoUse openssl on Unix rather than C functions directly for SHA256
John Ericson [Mon, 1 Aug 2016 20:28:25 +0000 (13:28 -0700)]
Use openssl on Unix rather than C functions directly for SHA256

9 years agoAdd documentation for source replacement
Alex Crichton [Mon, 1 Aug 2016 18:40:01 +0000 (11:40 -0700)]
Add documentation for source replacement

9 years agoAuto merge of #2942 - jseyfried:remove_unused_import, r=alexcrichton
bors [Mon, 1 Aug 2016 18:33:21 +0000 (11:33 -0700)]
Auto merge of #2942 - jseyfried:remove_unused_import, r=alexcrichton

Remove unused import

c.f. https://github.com/rust-lang/rust/pull/35116

9 years agoRemove unused import
Jeffrey Seyfried [Mon, 1 Aug 2016 18:30:46 +0000 (18:30 +0000)]
Remove unused import

9 years agoAddressing review comments
Alex Crichton [Tue, 26 Jul 2016 22:23:20 +0000 (15:23 -0700)]
Addressing review comments